home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 1, No. 10 (1982-06)(Softdisk)(Side B).zip / Softdisk Magazette Volume 1, No. 10 (1982-06)(Softdisk)(Side B).do / SORT.ROUTINE.bas < prev    next >
BASIC Source File  |  1996-12-24  |  2KB  |  83 lines

  1. 100  REM  THE ACTUAL SORT
  2. 110  REM  SUBROUTINE IS IN LINES
  3. 120  REM   390 - 640
  4. 130  REM 
  5. 140  REM  THE SUBROUTINE CAN BE
  6. 150  REM  PUT ANYWHERE BUT THE
  7. 160  REM  SORT WILL BE FASTER IF
  8. 170  REM  YOU PUT IT EARLY IN
  9. 180  REM  THE PROGRAM
  10. 190  REM 
  11. 200  REM  IF YOU REMOVE ALL THE
  12. 210  REM   'REM' STATEMENTS THE 
  13. 220  REM  ROUTINE WILL SORT 100
  14. 230  REM  FOUR DIGIT NUMBERS IN 
  15. 240  REM  ABOUT 45 SECONDS
  16. 250  REM 
  17. 260  REM  WHEN USING THE ROUTINE
  18. 270  REM  ALWAYS 'DIM' ONE MORE 
  19. 280  REM  ELEMENT IN YOUR ARRAYS
  20. 290  REM  THEN YOU WILL NEED
  21. 300  REM    (IF YOU ARE SORTING
  22. 310  REM     100 NUMBERS 'DIM'
  23. 320  REM     YOUR ARRAYS TO 101)
  24. 330  REM 
  25. 340  TEXT : HOME : GOTO 700
  26. 350  REM 
  27. 360  REM  ROUTINE AT 390 INSERTS
  28. 370  REM  A NUMBER IN THE LIST
  29. 380  REM  
  30. 390  FOR Q = CO TO X  STEP  -OE:EN(Q +OE) = EN(Q): NEXT Q:CO = CO +OE:EN(X) = ST(CO): RETURN 
  31. 400 EN(OE) = ST(OE):CO = OE
  32. 410  REM 
  33. 420  REM  LN 450 CHECKS IF SORT
  34. 430  REM  IS FINISHED
  35. 440  REM 
  36. 450  IF CO >N  THEN  FOR X = 1 TO N:EN(X) = EN(X +1): NEXT : RETURN 
  37. 460  REM 
  38. 470  REM  LNS 620-640 CHECK IF
  39. 480  REM  THE NUMBER IS LESS
  40. 490  REM  THEN THE OTHER NUMBERS
  41. 500  REM  IN THE LIST ,IF IT IS
  42. 510  REM  THEN IT CALLS THE
  43. 520  REM  ROUTINE AT 390 TO
  44. 530  REM  INSERT IT IN THE LIST
  45. 540  REM  IF IT ISN'T THE NUMBER
  46. 550  REM  IS PUT AT THE END
  47. 560  REM 
  48. 570  REM  TO SORT NUMBERS FROM
  49. 580  REM  LARGE TO SMALL CHANGE
  50. 590  REM  THE '<' IN LINE 620 TO
  51. 600  REM  A '>'
  52. 610  REM 
  53. 620  FOR X = OE TO CO: IF ST(CO +OE) <EN(X)  THEN  GOSUB 390: GOTO 450
  54. 630  NEXT 
  55. 640 CO = CO +OE:EN(X) = ST(CO): GOTO 450
  56. 650  REM 
  57. 660  REM  LINES 700 - 920
  58. 670  REM  ARE JUST I/O ROUTINES
  59. 680  REM  TO SHOW THE SORT
  60. 690  REM 
  61. 700  DIM ST(101),EN(101):N = 0:OE = 1
  62. 710  PRINT "HOW MANY NUMBERS TO SORT"
  63. 720  PRINT "(THE ARRAYS ARE SET UP FOR A MAXIMUN OF 100)";: INPUT N
  64. 730  FOR X = OE TO N:ST(X) =  INT( RND(22) *1000): NEXT 
  65. 740  REM 
  66. 750  REM  LINE 890 CALLS THE
  67. 760  REM  SORT ,SET N TO THE
  68. 770  REM  NUMBER OF ITEMS TO BE
  69. 780  REM  SORTED AND OE = 1
  70. 790  REM  ST(X) IS THE ARRAY
  71. 800  REM  THAT IS SORTED ,THE 
  72. 810  REM  NUMBERS ARE PUT INTO
  73. 820  REM  EN(X).
  74. 830  REM 
  75. 840  REM  TO SORT STRINGS JUST
  76. 850  REM  USE A STRING VARIABLE
  77. 860  REM  INSTEAD OF A NUMBERIC
  78. 870  REM  ONE.
  79. 880  REM 
  80. 890  GOSUB 400
  81. 900  HOME 
  82. 910  PRINT "ORIGINAL" TAB( 10)"SORTED": POKE 34,1
  83. 920  FOR X = OE TO N: PRINT ST(X); TAB( 10)EN(X): NEXT